/* 
 * File:   Cubetas.h
 * Author: jesus
 *
 * Created on 15 de junio de 2010, 12:54
 */

#ifndef _CUBETAS_H
#define	_CUBETAS_H

#include <iostream>
#include <string>
#include <fstream>


using namespace std;

class ErrorPosicionInvalidad{};

template<class Typo,unsigned tam>
class Cubetas{
    Typo datos[tam];
    unsigned usados;
    
public:
    Cubetas();
    ~Cubetas();
    void escribir(Typo &elemento,int pos);
    Typo & devolver(unsigned pos);

};
template<class Typo,unsigned tam>
void Cubetas<Typo,tam>::escribir(Typo &elemento,int pos){
    
    if(pos<tam)
    {
        datos[pos]=elemento;
        usados++;
    }
    else
        throw ErrorPosicionInvalidad();
    
}
template<class Typo,unsigned tam>
Typo & Cubetas<Typo,tam>::devolver(unsigned pos){
    Typo *dato;
    dato=new Typo();
    Typo &elemento=*dato;
    if(pos<tam)
    {
        elemento=datos[pos];
        
    }
    else
        throw ErrorPosicionInvalidad();
    return elemento;
}
#endif	/* _CUBETAS_H */

